package com.pkk.penguin.util.image.support.dto;

import com.pkk.penguin.util.image.support.enums.ColorTypeEnum;
import com.pkk.penguin.util.image.support.enums.ImageTypeEnum;
import java.awt.Font;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;

/**
 * @description:图片增加文本属性
 * @author: peikunkun
 * @create: 2018-09-24 16:34
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ImageTextAttri implements Serializable {

  private static final long serialVersionUID = -2274523524567948141L;

  /**
   * 文字操作-宽
   */
  @Default
  private Integer width = 2000;

  /**
   * 文字操作-高
   */
  @Default
  private Integer height = 2000;

  /**
   * 行高
   */
  @Default
  private float lineHeight = 30.7f;

  /**
   * 行宽
   */
  @Default
  private float maxWidth;


  /**
   * 最大行数
   */
  private Integer maxLine;

  /**
   * 一行展示的字符
   */
  private int lineWordNum = 25;


  /**
   * 左偏移量
   */
  private float left;


  /**
   * 上边距
   */
  private float top;


  /**
   * 是否修剪文本（1、去除首尾空格，2、将多个换行符替换为一个）
   */
  @Default
  private boolean trim = true;

  /**
   * 是否首行缩进
   */
  @Default
  private boolean lineIndent = true;

  /**
   * 内容颜色
   */
  @Default
  private ColorTypeEnum contentColor = ColorTypeEnum.WHITE;
  /**
   * 字体
   */
  @Default
  private Font font = new Font("楷体", Font.BOLD, 30);

  /**
   * 图片输出类型
   */
  @Default
  private String outImageType = ImageTypeEnum.PNG.getImageType();

  /**
   * 文本内容
   */
  private String content;


  /**
   * @Description:最大行宽
   * @Param: []
   * @return: float
   * @Author: peikunkun
   * @Date: 2019/11/11 0011 下午 2:10
   */
  public float getMaxWidth() {
    if (maxWidth <= 0) {
      if (null != getWidth()) {
        maxWidth = (getWidth() - 10);
      } else {
        maxWidth = 60;
      }
    }
    return maxWidth;
  }

  /**
   * @Description: 处理默认的左边距
   * @Param: []
   * @return: float
   * @Author: peikunkun
   * @Date: 2019/11/11 0011 下午 2:09
   */
  public float getLeft() {
    if (left < 0) {
      if (null != width && width > 0) {
        left = width / 2;
      } else {
        left = 0;
      }
    }
    return left;
  }

  /**
   * @Description: 处理默认的上边距
   * @Param: []
   * @return: float
   * @Author: peikunkun
   * @Date: 2019/11/11 0011 下午 2:09
   */
  public float getTop() {
    if (top < 0) {
      if (null != height && height > 0) {
        top = height / 2;
      } else {
        top = 0;
      }
    }
    return top;
  }

  /**
   * @Description: 获取最大行数
   * @Param: []
   * @return: java.lang.Integer
   * @Author: peikunkun
   * @Date: 2019/11/11 0011 下午 2:18
   */
  public Integer getMaxLine() {
    if (null == maxLine || maxLine <= 0) {
      if (StringUtils.isNotEmpty(content) && lineWordNum > 0) {
        maxLine = (content.length() / lineWordNum) + 1;
      } else {
        maxLine = 10;
      }
    }
    return maxLine;
  }
}
